package com.platform.base.service;

import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.platform.base.domain.BaseFactory;
import com.platform.base.domain.BaseLocation;
import com.platform.base.domain.MeterInfo;
import com.platform.common.core.domain.Ztree;

/**
 * 住户信息Service接口
 * 
 * @author wangqi
 * @date 2020-09-24
 */
public interface IBaseLocationService extends IService<BaseLocation>
{
    /**
     * 查询住户信息列表
     * 
     * @param baseLocation 住户信息
     * @return 住户信息集合
     */
    public List<BaseLocation> selectBaseLocationList(BaseLocation baseLocation);
    /**
     * 查询住户信息列表
     *
     * @param locationId 住户ID
     * @return 热表信息
     */
    public BaseLocation selectBaseLocationById(String locationId);


    /**
     * 查询住户信息列表
     *
     * @param baseLocation 住户信息
     * @return 住户信息集合
     */
    public List<BaseLocation> selectBaseLocationDataList(BaseLocation baseLocation);

    /**
     * 新增住户信息
     * 
     * @param baseLocation 住户信息
     * @return 结果
     */
    public int insertBaseLocation(BaseLocation baseLocation);

    /**
     * 修改住户信息
     * 
     * @param baseLocation 住户信息
     * @return 结果
     */
    public int updateBaseLocation(BaseLocation baseLocation);

    /**
     * 批量删除住户信息
     * 
     * @param id 需要删除的数据ID
     * @return 结果
     */
    public int deleteBaseLocationById(Long id);

    /**
     * 查询是否包含下属部门
     * @param parentId
     * @return
     */
    public int selectLocationCount(Long parentId);

    /**
     * 查询是否存在设备关联
     * @param locationId
     * @return
     */
    public int checkLocationExistEquipment(Long locationId);

    /**
     * 校验住户信息是否唯一
     * 
     * @param baseLocation 住户信息
     * @return 结果
     */
    public String checkLocationNameUnique(BaseLocation baseLocation);

    /**
     * 查询住户管理树
     *
     * @return 所有住户信息
     */
    public List<Ztree> selectLocationTree(BaseLocation baseLocation);

    /**
     * 查询住户管理树（排除下级）
     *
     * @param location 住户信息
     * @return 所有住户信息
     */
    public List<Ztree> selectLocationTreeExcludeChild(BaseLocation location);

    /**
     * 导入住户信息
     *
     * @param locationList 住户信息列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importLocation(List<BaseLocation> locationList, Boolean isUpdateSupport, String operName);


    /**
     * 用户状态修改
     *
     * @param location 用户信息
     * @return 结果
     */
    public int changeStatus(BaseLocation location);
    /**
     * 用户状态修改
     *
     * @param location 用户信息
     * @return 结果
     */
    public int changeAlarmStatus(BaseLocation location);
}
